// sgu275
// 题意：
// 给定n(<=100)个非负整数，现在要求一个子序列使得子序列xor和最大。
// 每个数都不超过10^18。
//
// 题解：
// 这个直观的想法可以用高斯消元贪心搞，不断满足最高为为1就行。
//
// 也可以用线性基的做法，得道这n个数的线性无关向量（基底）。
//
// 下面这种写法求线性基的时候，没有把某次其他行的对应位的1都消掉，
// 所以求最大值的时候从最大的线性基往小做，如果某一次ans对应位为
// 0, 就异或上当前线性基，最后得道的就是最大值。
//
// ml:run = $bin < input
#include <iostream>

int const maxlen = 61;
long long lb[maxlen + 4];
int n;

int main()
{
	std::ios_base::sync_with_stdio(false);
	std::cin >> n;
	for (int i = 1; i <= n; i++) {
		long long x; std::cin >> x;
		for (int j = maxlen; j >= 0; j--)
			if ((x >> j) & 1) {
				if (!lb[j]) { lb[j] = x; break; }
				else x ^= lb[j];
			}
	}

	long long ans = 0;
	for (int i = maxlen; i >= 0; i--)
		if (!((ans >> i) & 1)) ans ^= lb[i];
	std::cout << ans << "\n";
}

